import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

# 加载并灰度化图像
img1 = Image.open('D:\\2D-DFT\image\\testhaze1.png').convert('L')
img2 = Image.open('D:\\2D-DFT\image\\testhaze2.png').convert('L')

img1 = np.array(img1, dtype=np.float32)
img2 = np.array(img2, dtype=np.float32)

# 自动裁剪为相同尺寸（从左上角开始）
H = min(img1.shape[0], img2.shape[0])
W = min(img1.shape[1], img2.shape[1])
img1 = img1[:H, :W]
img2 = img2[:H, :W]

# 傅里叶变换
f1 = np.fft.fft2(img1)
f2 = np.fft.fft2(img2)

# 幅度 & 相位
mag1, phase1 = np.abs(f1), np.angle(f1)
mag2, phase2 = np.abs(f2), np.angle(f2)

# 构造新频域（图2幅度 + 图1相位）
f_new = mag2 * np.exp(1j * phase1)

# 逆变换复原图像
img_new = np.fft.ifft2(f_new)
img_new = np.real(img_new)
img_new = np.clip(img_new, 0, 255).astype(np.uint8)

# 显示图像
plt.figure(figsize=(12, 4))
plt.subplot(1, 3, 1)
plt.title("Image 1 (提供相位)")
plt.imshow(img1, cmap='gray')
plt.axis('off')

plt.subplot(1, 3, 2)
plt.title("Image 2 (提供幅度)")
plt.imshow(img2, cmap='gray')
plt.axis('off')

plt.subplot(1, 3, 3)
plt.title("融合结果 (相位1 + 幅度2)")
plt.imshow(img_new, cmap='gray')
plt.axis('off')

plt.tight_layout()
plt.show()
